# TransactionListener.java

    package org.codefilarete.stalactite.sql;

    import java.sql.Savepoint;

    /**
     * Default contract for listening to transaction commit and rollback
     *
     * @author Guillaume Mary
     */
    public interface TransactionListener extends CommitListener, RollbackListener {

    	@Override
    	default void beforeCommit() {
    		beforeCompletion();
    	}

    	@Override
    	default void afterCommit() {
    		afterCompletion();
    	}

    	@Override
    	default void beforeRollback() {
    		beforeCompletion();
    	}

    	@Override
    	default void afterRollback() {
    		afterCompletion();
    	}

    	@Override
    	default void beforeRollback(Savepoint savepoint) {
    		beforeCompletion(savepoint);
    	}

    	@Override
    	default void afterRollback(Savepoint savepoint) {
    		afterCompletion(savepoint);
    	}

    	default void afterCompletion(Savepoint savepoint) {
    		afterCompletion();
    	}

    	default void beforeCompletion(Savepoint savepoint) {
    		beforeCompletion();
    	}

    	void beforeCompletion();

    	void afterCompletion();

    	/**
    	 * Implemented for non-temporary listener (arbitrary choice)
    	 * @return false
    	 */
    	@Override
    	default boolean isTemporary() {
    		return false;
    	}
    }